package io.renren.common.utils;


//accessKeyId LTAI5tG6hhJyKCLYW44mXpAo
//accessKeySecret Uf2Qgta86uiB5TXRm6g2nhrjo8E5am

import com.aliyun.dysmsapi20170525.Client;
import com.aliyun.dysmsapi20170525.models.SendBatchSmsRequest;
import com.aliyun.dysmsapi20170525.models.SendBatchSmsResponse;
import com.aliyun.dysmsapi20170525.models.SendSmsRequest;
import com.aliyun.dysmsapi20170525.models.SendSmsResponse;
import com.aliyun.teaopenapi.models.Config;

import static com.aliyun.teautil.Common.toJSONString;

public class SmsUtil {
    public static Client createClient() throws Exception {
        Config config = new Config()
                // 配置 AccessKey ID，请确保代码运行环境配置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
//                .setAccessKeyId(System.getenv("LTAI5tG6hhJyKCLYW44mXpAo"))
                .setAccessKeyId("LTAI5tG6hhJyKCLYW44mXpAo")
                // 配置 AccessKey Secret，请确保代码运行环境配置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
//                .setAccessKeySecret(System.getenv("Uf2Qgta86uiB5TXRm6g2nhrjo8E5am"));
                .setAccessKeySecret("Uf2Qgta86uiB5TXRm6g2nhrjo8E5am");
        // System.getenv()方法表示获取系统环境变量，不要直接在getenv()中填入AccessKey信息。

        // 配置 Endpoint。中国站使用dysmsapi.aliyuncs.com
        config.endpoint = "dysmsapi.aliyuncs.com";

        return new Client(config);
    }

    /**
     * 发送短信
     *
     * @param phoneNumbers  手机号
     * @param signName      签名
     * @param templateCode  模板
     * @param templateParam 模板参数
     * @return response
     * @throws Exception 异常
     */
    public static SendSmsResponse sendSms(String phoneNumbers, String signName, String templateCode, String templateParam) throws Exception {
        System.out.println(templateParam);

        // 初始化请求客户端
        Client client = SmsUtil.createClient();

        // 构造API请求对象，请替换请求参数值
        SendSmsRequest sendSmsRequest = new SendSmsRequest()
                .setPhoneNumbers(phoneNumbers)
                .setSignName(signName)
                .setTemplateCode(templateCode)
                .setTemplateParam(templateParam);
        // TemplateParam为序列化后的JSON字符串。

        // 获取响应对象
        SendSmsResponse sendSmsResponse = client.sendSms(sendSmsRequest);

        // 响应包含服务端响应的 body 和 headers
        System.out.println(toJSONString(sendSmsResponse));
        return sendSmsResponse;
    }

    /**
     * 发送短信 预约成功后给管理员
     *
     * @param phoneNumbers 手机号
     * @param projectName  项目名称
     * @param name         姓名
     * @param time         时间 2025.08.05 12:00-2025.08.05 14:00。
     * @return response
     * @throws Exception 异常
     */
    public static SendSmsResponse sendSmsToAdmin(String phoneNumbers, String projectName, String name, String time) throws Exception {
        String templateParam = "{\"projectname\":\"" + projectName + "\",\"name\":\"" + name + "\",\"time\":\"" + time + "\"}";
        return sendSms(phoneNumbers, "陕西研诚科技", "SMS_492440048", templateParam);
    }

    /**
     * 发送短信 预约成功后给管理员
     *
     * @param phoneNumbers 手机号
     * @param projectName  项目名称
     * @param name         姓名
     * @param time         时间 2025.08.05 12:00-2025.08.05 14:00。
     * @return response
     * @throws Exception 异常
     */
    public static SendBatchSmsResponse batchSendSmsToAdmin(String phoneNumbers, String projectName, String name, String time) throws Exception {
        // 初始化请求客户端
        Client client = SmsUtil.createClient();
        // 构造API请求对象，请替换请求参数值
        String[] split = phoneNumbers.split(",");
        String phoneNumberJson = "[";
        String signNameJson = "[";
        String templateParamJson = "[";
        for (String s : split) {
            phoneNumberJson += "\"" + s + "\",";
            signNameJson += "\"陕西研诚科技\",";
            templateParamJson += "{\"projectname\":\"" + projectName + "\",\"name\":\"" + name + "\",\"time\":\"" + time + "\"},";
        }
        phoneNumberJson = phoneNumberJson.substring(0, phoneNumberJson.length() - 1) + "]";
        signNameJson = signNameJson.substring(0, signNameJson.length() - 1) + "]";
        templateParamJson = templateParamJson.substring(0, templateParamJson.length() - 1) + "]";
//        System.out.println("1>>>>>>>>" + phoneNumberJson);
//        System.out.println("2>>>>>>>>" + signNameJson);
//        System.out.println("3>>>>>>>>" + templateParamJson);

        SendBatchSmsRequest sendBatchSmsRequest = new SendBatchSmsRequest()
                .setPhoneNumberJson(phoneNumberJson)
                .setSignNameJson(signNameJson)
                .setTemplateCode("SMS_492440048")
                .setTemplateParamJson(templateParamJson);
        // TemplateParam为序列化后的JSON字符串。
        // 获取响应对象
        SendBatchSmsResponse sendBatchSmsResponse = client.sendBatchSms(sendBatchSmsRequest);
        // 响应包含服务端响应的 body 和 headers
//        System.out.println(toJSONString(sendBatchSmsResponse));
        return sendBatchSmsResponse;
    }

    /**
     * 发送短信 给用户注意时间
     *
     * @param phoneNumbers 手机号
     * @param projectName  项目名称
     * @param hours        小时
     * @param time         时间 2025.08.05 12:00-2025.08.05 14:00。
     * @return response
     * @throws Exception 异常
     */
    public static SendSmsResponse sendSmsToUserTime(String phoneNumbers, String projectName, String hours, String time) throws Exception {
        String templateParam = "{\"projectname\":\"" + projectName + "\",\"hours\":\"" + hours + "\",\"time\":\"" + time + "\"}";
        return sendSms(phoneNumbers, "陕西研诚科技", "SMS_492575042", templateParam);
    }

    /**
     * 发送短信 给用户测试完成
     *
     * @param phoneNumbers 手机号
     * @param projectName  项目名称
     * @param date         日期 2025.08.05
     * @return response
     * @throws Exception 异常
     */
    public static SendSmsResponse sendSmsToUserFinish(String phoneNumbers, String projectName, String date) throws Exception {
        String templateParam = "{\"projectname\":\"" + projectName + "\",\"date\":\"" + date + "\"}";
        return sendSms(phoneNumbers, "陕西研诚科技", "SMS_492420041", templateParam);
    }

    /**
     * 发送短信 给用户扣费完成
     *
     * @param phoneNumbers 手机号
     * @param projectName  项目名称
     * @param date         日期 2025.08.05
     * @return response
     * @throws Exception 异常
     */
    public static SendSmsResponse sendSmsToUserCharging(String phoneNumbers, String projectName, String date) throws Exception {
        String templateParam = "{\"projectname\":\"" + projectName + "\",\"date\":\"" + date + "\"}";
        return sendSms(phoneNumbers, "陕西研诚科技", "SMS_492465049", templateParam);
    }


    public static void main(String[] args) throws Exception {
        // 初始化请求客户端
        Client client = SmsUtil.createClient();
//
//        // 构造API请求对象，请替换请求参数值
//        SendSmsRequest sendSmsRequest = new SendSmsRequest()
//                .setPhoneNumbers("18939559563")
//                .setSignName("陕西研诚科技")
//                .setTemplateCode("SMS_492440048")
//                .setTemplateParam("{\"projectname\":\"EBSD\",\"name\":\"于总\",\"time\":\"2025-08-05 15:21:42\"}"); // TemplateParam为序列化后的JSON字符串。
//        // 获取响应对象
//        SendSmsResponse sendSmsResponse = client.sendSms(sendSmsRequest);
//        // 响应包含服务端响应的 body 和 headers
//        System.out.println(toJSONString(sendSmsResponse));
//

        // 构造API请求对象，请替换请求参数值
        SendBatchSmsRequest sendBatchSmsRequest = new SendBatchSmsRequest()
                .setPhoneNumberJson("[\"17601018908\",\"18939559563\"]")
                .setSignNameJson("[\"陕西研诚科技\",\"陕西研诚科技\"]")
                .setTemplateCode("SMS_492440048")
                .setTemplateParamJson("[{\"projectname\":\"EBSD\",\"name\":\"于总\",\"time\":\"2025-08-14 22:30:00 23:30:00\"}" +
                        ",{\"projectname\":\"EBSD\",\"name\":\"李总\",\"time\":\"2025-08-14 22:30:00 23:30:00\"}]");
        // TemplateParam为序列化后的JSON字符串。
        // 获取响应对象
        SendBatchSmsResponse sendSmsResponse = client.sendBatchSms(sendBatchSmsRequest);

        // 响应包含服务端响应的 body 和 headers
        System.out.println(toJSONString(sendSmsResponse));
    }


}